package com.obelisco.modelo.data;

import java.util.HashSet;
import java.util.Set;

import org.hibernate.validator.NotEmpty;
import org.hibernate.validator.NotNull;

import com.obelisco.modelo.data.auxiliares.Archivo;

public class CarpetaTransaccion extends DataGenerica<CarpetaTransaccion> {	

	private Integer codigo;
    private Sistema sistema;
	private String nombre = "";
	private String descripcion = "";
	private String ruta;
	private CarpetaTransaccion padre;
	private Integer nivel;
	private Archivo icono = new Archivo();
	private Integer orden;
	private Set<Transaccion> transacciones = new HashSet<Transaccion>();
	private Set<CarpetaTransaccion> hijos = new HashSet<CarpetaTransaccion>();	
	
	public CarpetaTransaccion() {
		super(CarpetaTransaccion.class);
	}
	
	public void setPadre(CarpetaTransaccion padre) {
		this.padre = padre;
		if (padre != null) {
			this.setSistema(padre.getSistema());
			this.nivel = padre.getNivel()+1;
		}
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

    @NotNull(message="{error.notnull}")
    @NotEmpty(message="{error.notempty}")
	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public CarpetaTransaccion getPadre() {
		return padre;
	}

	public String getRuta() {
		return ruta;
	}

	public void setRuta(String ruta) {
		this.ruta = ruta;
	}

    @NotNull(message="{error.notnull}")
	public Sistema getSistema() {
		return sistema;
	}

	public void setSistema(Sistema sistema) {
		this.sistema = sistema;
	}

	public Set<CarpetaTransaccion> getHijos() {
		return hijos;
	}

	public void setHijos(Set<CarpetaTransaccion> hijos) {
		this.hijos = hijos;
	}

	public Set<Transaccion> getTransacciones() {
		return transacciones;
	}

	public void setTransacciones(Set<Transaccion> transacciones) {
		this.transacciones = transacciones;
	}

	public Archivo getIcono() {
		return icono;
	}

	public void setIcono(Archivo icono) {
		if (icono != null) {
			this.icono = icono;
			this.icono.setNombre("foto.jpg");
			if (this.icono.getContenido().length > 0)
				this.icono.setTipo(Archivo.determinarTipo(icono.getContenido()));
			else {
				this.icono.setContenido(new byte[] {});
				this.icono.setTipo("");
			}
		} else
			this.icono = new Archivo();
	}

	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public void setNivel(Integer nivel) {
		this.nivel = nivel;
	}

	public Integer getNivel() {
		return nivel;
	}

	public Integer getOrden() {
		return orden;
	}

	public void setOrden(Integer orden) {
		this.orden = orden;
	}

	@Override
	public boolean equals(CarpetaTransaccion carpetaTransaccion) {
		return carpetaTransaccion.codigo.equals(this.codigo);
	}
	
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return this.ruta;
	}
}
